#没有使用继承前的代码

class Student:
    # 定义属性
    name = None
    age = None
    __score = None
    # 定义构造方法
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 定义普通的公开方法
    def show_info(self):
        print(f"name={self.name} age = {self.age} score = {self.__score}")

    def set_score(self, score):
        self.__score = score

#小学生类
class Pupil(Student):
    def testing(self):
        print("小学生在考小学数学...")

#创建一个大学生类
class Graduate(Student):
    def testing(self):
        print(f"大学生在考高等数据...")

#测试这两个类
stduent1 = Pupil("apple" , 10)
stduent1.testing()
stduent1.set_score(80)
stduent1.show_info()

print(("-"*50))
stduent2 = Graduate("grape" , 22)
stduent2.testing()
stduent2.set_score(100)
stduent2.show_info()

#问题分析
#1.Pupil和Graduate有很多相同的属性和方法
#2.目前这样的做法,代码复用性差
#3.同时也不利于代码的维护和管理

"""
继承基本介绍
(1).继承可以解决代码服用的问题,让我们的编程更加靠近人类思维
(2).当多个类存在相同的属性(成员变量)和方法的时候,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法
    所有的子类不需要重新定义这些属性和方法
"""


